home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / system / mail / transpor / ifmail23.z / ifmail23 / ifmail / ifcico / filetime.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-07  |  1.2 KB  |  74 lines

  1. #include <sys/types.h>
  2. #include <time.h>
  3.  
  4. time_t mtime2sl(time_t);
  5. time_t sl2mtime(time_t);
  6. time_t mtime2tl(time_t);
  7. time_t tl2mtime(time_t);
  8.  
  9. time_t gmtoff(time_t);
  10. time_t gmtoff(tt)
  11. time_t tt;
  12. {
  13.     struct tm lt;
  14. #ifdef DONT_HAVE_TM_GMTOFF
  15.     struct tm gt;
  16.     time_t offset;
  17.  
  18.     lt=*localtime(&tt);
  19.     gt=*gmtime(&tt);
  20.     offset=gt.tm_yday-lt.tm_yday;
  21.     if (offset > 1) offset=-24;
  22.     else if (offset < -1) offset=24;
  23.     else offset*=24;
  24.     offset+=gt.tm_hour-lt.tm_hour;
  25.     offset*=60;
  26.     offset+=gt.tm_min-lt.tm_min;
  27.     offset*=60;
  28.     offset+=gt.tm_sec-lt.tm_sec;
  29.     return offset;
  30. #else
  31.     lt=*localtime(&tt);
  32.     return lt.tm_gmtoff;
  33. #endif
  34. }
  35.  
  36. time_t mtime2sl(tt)
  37. time_t tt;
  38. {
  39.     return tt-gmtoff(tt);
  40. }
  41. time_t sl2mtime(tt)
  42. time_t tt;
  43. {
  44.     return tt+gmtoff(tt);
  45. }
  46. time_t mtime2tl(tt)
  47. time_t tt;
  48. {
  49.     time_t tlt=0L;
  50.     struct tm *tm;
  51.  
  52.     tm=localtime(&tt);
  53.     tlt |= ((tm->tm_year)-1980)<<25;
  54.     tlt |= (tm->tm_mon)<<21;
  55.     tlt |= (tm->tm_mday)<<16;
  56.     tlt |= (tm->tm_hour)<<11;
  57.     tlt |= (tm->tm_min)<<5;
  58.     tlt |= (tm->tm_sec)>>1;
  59.     return tlt;
  60. }
  61. time_t tl2mtime(tt)
  62. time_t tt;
  63. {
  64.     struct tm tm;
  65.  
  66.     tm.tm_year= ((tt>>25)&0x7f)+1980;
  67.     tm.tm_mon=  (tt>>21)&0x0f;
  68.     tm.tm_mday=  (tt>>16)&0x1f;
  69.     tm.tm_hour= (tt>>11)&0x1f;
  70.     tm.tm_min=  (tt>>5 )&0x3f;
  71.     tm.tm_sec=  ((tt    )&0x1f)*2;
  72.     return mktime(&tm);
  73. }
  74.